//
// AEntity.hh for bomberman in /home/lefebv_w//workspace/cpp/bomberman/googleCode/level
// 
// Made by damien lefebvre
// Login   <lefebv_w@epitech.net>
// 
// Started on  Sat May 11 17:44:34 2013 damien lefebvre
// Last update Wed May 29 14:56:00 2013 damien lefebvre
//

#ifndef		__AENTITY_HH__
#define		__AENTITY_HH__

/* gl includes */
#include	<GL/gl.h>

/* gdl includes */
#include	<GameClock.hpp>
#include	<Input.hpp>
#include	<Model.hpp>

/* my includes */
#include	"AObject.hh"

class		ALevel;

class		AEntity : public AObject
{
public :
  typedef enum
    {
      RIGHT = 0, UP = 90, LEFT = 180, DOWN = -90
    }	Direction;	


private :
  Direction	m_direction;

protected :
  ALevel &	m_level;
  float		m_radius;
  Vector3f	m_basicRotate;
  std::string	m_anim;
  gdl::Model	m_model;
 
public :
  AEntity(Vector3f const & position, ALevel & level);

  virtual void	initialize(void) = 0;
  virtual void	update(gdl::GameClock const &, gdl::Input &) = 0;
  
  void		draw(void);
  bool		move(void);
  void		setMove(Direction dir);
};

#endif
